1.4.4 if语句
与大多数语言一样,C++也提供了if语句来支持条件执行。我们可以利用if语句写一个程序,来统计在输入中每个值连续出现了多少次:
#include <iostream>
int main()
{
// currVal是我们正在统计的数;我们将读入的新值存入val
int currVal = 0 val = 0;
// 读取第一个数,并确保确实有数据可以处理
if (std::cin >> currVal){
int cnt = 1; // 保存我们正在处理的当前值的个数
while (std::cin >> val){ // 读取剩余的数
if (val == currVal) // 如果值相同
++cnt; // 将cnt加1
else{ // 否则,打印一个值的个数
std::cout << currVal << " occurs " << cnt << " times " << std::endl;
currVal = val; // 记住新值
cnt = 1; // 重置计数器
}
} // while循环在这里结束
// 记住打印文件中最后一个值的个数
std::cout << currVal << " occurs " << cnt << " times " << std::endl;
} // 最外层的if语句在这里结束
return 0;
}
如果我们输入如下内容:
42 42 42 42 42 55 55 62 100 100 100
则输出应该是:
42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times
有了之前多个程序的基础,你对这个程序中的大部分代码应该比较熟悉了。程序以两个变量 val 和 currVal 的定义开始:currVal 记录我们正在统计出现次数的那个数;val则保存从输入读取的每个数。与之前的程序相比,新的内容就是两个if语句。第一条if语句
if (std::cin >> currVal){
// ...
} // 最外层的if语句在这里结束
保证输入不为空。与while语句类似,if也对一个条件进行求值。第一条if语句的条件是读取一个数值存入currVal中。如果读取成功,则条件为真,我们继续执行条件后的语句块。该语句块以左花括号开始,以return语句之前的右花括号结束。
如果需要统计出现次数的值,我们就定义cnt,用来统计每个数值连续出现的次数。与上一小节的程序类似,我们用一个while循环反复从标准输入读取整数。
while的循环体是一个语句块,它包含了第二条if语句:
if (val == currVal) // 如果值相同
++cnt; // 将 cnt 加 1
else{ // 否则,打印前一个值的个数
std::cout << currVal << " occurs " << cnt << " times " << std::endl;
currVal = val; // 记住新值
cnt = 1; // 重置计数器
}
这条if语句中的条件使用了相等运算符(==)来检测val是否等于currVal。如果是,我们执行紧跟在条件之后的语句。这条语句将cnt增加1,表明我们再次看到了currVal。
如果条件为假,即val不等于currVal,则执行else之后的语句。这条语句是一个由一条输出语句和两条赋值语句组成的语句块。输出语句打印我们刚刚统计完的值的出现次数。赋值语句将cnt重置为1,将currVal重置为刚刚读入的值val。
警告!(WARNING!):C++用=进行赋值,用==作为相等运算符。两个运算符都可以出现在条件中。一个常见的错误是想在条件中使用==(相等判断),却误用了=。
普通的冒险故事提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。
好书推荐:《我的剧本世界在自主运行》、《我是舰娘》、《交错世界之学院都市》、《认清现实后,她们开始追夫火葬场》、《好徒儿你就饶了为师伐》、《带着修真界仙子们天下无敌》、《剑来》、《修炼成仙的我只想养成女徒弟》、《足控勇者的目标是魔王的丝袜》、《被触手怪养大的少女》、